package catalogo.servicios;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import catalogo.dao.RecetaDAO;
import catalogo.entidades.Receta;

/**
 * Clase que implementa la interfaz RecetaServicio
 */

@Transactional(readOnly = false)
@Service("servicioReceta")
public class RecetaServicioImpl implements RecetaServicio

{
	/**
	 * DAO cuyos metodos seran invocados para interaccionar con la base de datos
	 */
	@Autowired
	private RecetaDAO recetaDAO;

	public RecetaDAO getRecetaDAO() {
		return recetaDAO;
	}

	public void setRecetaDAO(RecetaDAO recetaDAO) {
		this.recetaDAO = recetaDAO;
	}

	/**
	 * *CRUD RECETAs
	 */
	@Transactional(readOnly = false)
	public void InsertarReceta(Receta receta) {
		getRecetaDAO().InsertarReceta(receta);
	}

	@Transactional(readOnly = false)
	public void ModificarReceta(Receta receta) {
		getRecetaDAO().ModificarReceta(receta);
	}

	@Transactional(readOnly = false)
	public void EliminarReceta(Receta receta) {
		getRecetaDAO().EliminarReceta(receta);
	}

	/**
	 * Devuelve una lista con todos las recetas
	 * 
	 * @return List<Receta> Lista de recetas
	 * @see catalogo.servicios.Receta#obtenerRecetas()
	 */

	@Transactional(readOnly = true)
	public List<Receta> obtenerTodasLasRecetas() {
		return getRecetaDAO().obtenerTodasLasRecetas();
	}

	@Transactional(readOnly = true)
	public Receta BuscarRecetaPorIdReceta(String idReceta) {
		return getRecetaDAO().BuscarRecetaPorIdReceta(idReceta);

	}

	@Transactional(readOnly = true)
	public List<Receta> BuscarRecetaPorNombre(String nombreReceta) {
		return getRecetaDAO().BuscarRecetaPorNombre(nombreReceta);

	}

	@Transactional(readOnly = true)
	public List<Receta> BuscarRecetaPorTipo(String tipoReceta) {
		List<Receta> resultado = getRecetaDAO().BuscarRecetaPorTipo(tipoReceta);
		System.out.println("servicio" + resultado.toString());
		return resultado;

	}

	public List<Receta> BuscarRecetaPorNombre_Tipo(String nombreReceta,
			String tipoReceta) {
		List<Receta> resultado = getRecetaDAO().BuscarRecetaPorNombre_Tipo(
				nombreReceta, tipoReceta);
		System.out.println("servicio" + resultado.toString());
		return resultado;

	}

}
